COVID-19 ဗိုင်းရပ်၏အမည်မှာ Severe Acute Respiratory Syndrome Coronavirus 2 (SARS-CoV-2) ဖြစ်ပြီးထိုဗိုင်းရပ်ကြောင့်ဖြစ်သောရောဂါကို coronavirus disease(COVID-19) ဟုခေါ်ပါသည်။ Corona ဟူသောစကားလုံးသည် Latin ဘာသာဖြင့်ရေးသားထားခြင်းဖြစ်ပြီး English လို Crown ဟုအဓိပ္ပါယ်ရပါသည်။ ဗိုင်းရပ်၏ပုံသဏ္ဍပေါ်အခြေခံ၍ရေးသားခြင်းဖြစ်ပါသည်။ ဗိုင်းရပ်၏အမည်ပေးခြင်းကို International Committee on Taxonomy of Viruses (ICTV) မှပြုလုပ်ပြီး ရောဂါ၏အမည်ပေးခြင်းကို WHO မှပြုလုပ်ခြင်းဖြစ်ပါသည်။

WHO'S NAMING-and-the-virus-that-causes-it)
COVID-19 ရောဂါနှင့်ပတ်သက်၍လေ့လာတွေ့ရှိမှု့အသစ်
COVID-19 ရောဂါကြောင့်ဖြစ်ပေါ်လာသောရောဂါလက္ခဏာအသစ်(COVID toes)
အထက်ပါ website များမှတဆင့်သတင်းအချက်အလက်များရယူနိင်ပါသည်။
%store -r __importing_Lib
__importing_Lib
import matplotlib as mpl
from matplotlib.legend import Legend
from folium import plugins
from graphviz import Digraph
import os
import datetime
from matplotlib import gridspec
os.environ["PATH"] += os.pathsep + 'C:/Program Files/Graphviz2.38/bin/'
mpl.rcParams['xtick.minor.size'] = 0
mpl.rcParams['xtick.minor.width'] = 0
mpl.rcParams['ytick.minor.size'] = 0
mpl.rcParams['ytick.minor.width'] = 0
plt.rcParams['font.weight'] = 'bold'
plt.rcParams['axes.labelweight'] = 'bold'
plt.rcParams['axes.titleweight'] = 'bold'
covid_df = pd.read_excel('covid/COVID-19-2020-05-31.xlsx', parse_dates=['dateRep'])
covid_df.rename(columns={'countryterritoryCode': 'Country_Code'}, inplace=True)
print(covid_df.shape)
cc_dict = {
'Anguilla': 'AIA', 'Bonaire, Saint Eustatius and Saba': 'BES',
'Czechia': 'CZE', 'Falkland_Islands_(Malvinas)': 'FLK'
}
covid_df.query('countriesAndTerritories!=["Cases_on_an_international_conveyance_Japan"]', inplace=True)
for c_name, c_code in cc_dict.items():
covid_df.loc[covid_df.countriesAndTerritories==c_name, 'Country_Code'] = c_code
print(covid_df.shape)
start_date = covid_df.dateRep.min().strftime('%d-%m-%Y')
last_date = covid_df.dateRep.max().strftime('%d-%m-%Y')
print(f'start_date: {start_date}', f'last_date : {last_date}', sep='\n')
total_death = covid_df.deaths.sum()
total_cases = covid_df.cases.sum()
overall_death_rate = total_death / total_cases * 100
print(f'total_death: {total_death:7,}\ntotal_cases: {total_cases:7,}\noverall_death_rate: {overall_death_rate:.3f}%')
covid_df.head()
region_df = pd.read_csv('life_expectancy/Metadata_Country.csv', usecols=[0, 1, 2])
region_df.columns = 'Country_Code', 'Region', 'IncomeGroup'
region_df.dropna(subset=['IncomeGroup'], inplace=True)
region_df.head()
region_dict = {'Anguilla': ['Latin America & Caribbean', 'High income'],
'Bonaire, Saint Eustatius and Saba': ['Latin America & Caribbean', 'High income'],
'Falkland_Islands_(Malvinas)': ['Latin America & Caribbean', 'High income'],
'Guernsey': ['Europe & Central Asia', 'High income'],
'Holy_See': ['Europe & Central Asia', 'High income'],
'Jersey': ['Europe & Central Asia', 'High income'],
'Montserrat': ['Latin America & Caribbean', 'Upper middle income'],
'Taiwan': ['East Asia & Pacific', 'High income']
}
merge_df = covid_df.merge(region_df, on='Country_Code', how='left')
for cname, (reg, level) in region_dict.items():
merge_df.loc[merge_df.countriesAndTerritories==cname, ['Region', 'IncomeGroup']] = reg, level
col_to_keep = ['dateRep', 'cases', 'deaths', 'Country_Name', 'Region', 'IncomeGroup']
merge_df = merge_df.rename(columns={'countriesAndTerritories': 'Country_Name'}).loc[:, col_to_keep]
merge_df.head()
country_df = (merge_df.groupby(['Country_Name', 'IncomeGroup'])
.agg({'cases': 'sum', 'deaths': 'sum'})
.reset_index([0, 1]))
country_df.Country_Name.replace({'Democratic_Republic_of_the_Congo': 'Congo', 'United_States_of_America': 'USA'},
inplace=True)
country_df['c_proportion'] = country_df.cases / total_cases * 100
country_df['d_proportion'] = country_df.deaths / total_death * 100
country_df['death_rate'] = country_df.deaths / country_df.cases * 100
country_df.sort_values(['d_proportion', 'c_proportion', 'death_rate'], ascending=False).head()
case_name_lst = []
case_quan_lst = []
fig, ((ax1, ax2), (ax3, ax4))= plt.subplots(2, 2, figsize=(15, 10))
income_grp = country_df.groupby('IncomeGroup')
for g_name, grp in income_grp:
temp = grp.sort_values('cases').tail()
case_name_lst.append(temp.Country_Name.iloc[-1])
case_quan_lst.append(temp.cases.iloc[-1])
ax = (ax1 if g_name=='High income' else ax2
if g_name=='Upper middle income' else ax3
if g_name=='Lower middle income' else ax4)
ax.set_title(g_name, y=1.035)
ax.barh(temp.Country_Name, temp.cases, color='steelblue')
ax.set_xlabel('Number of patients')
ax.xaxis.set_label_coords(0.5, -0.123)
for label in ax.get_xticklabels()[1::2]:
label.set_visible(False)
ax.xaxis.set_major_formatter(mpl.ticker.StrMethodFormatter('{x:,.0f}'))
for i, v in enumerate(temp.cases):
if g_name=='High income':
x = v-310_000 if v > 1_700_000 else v-230_000 if v > 230_000 else v+800
elif g_name=='Upper middle income':
x = v-73_000
elif g_name=='Lower middle income':
x = v-27_000 if v > 180_000 else v-23_000 if v > 25_000 else v-22_000
else:
x = v-1_800 if v > 10_000 else v-1_500
ax.text(x, i-0.1, f'{v:,}', color='white' if x < v else 'k')
plt.subplots_adjust(top=0.85, wspace=0.3, hspace=0.5)
fig.text(.5, 0.925, f'\nCOVID-19 Patients of all countries are analysed by IncomeGroup from \ {start_date} to {last_date}',
fontdict={'size':'x-large', 'ha':'center'})
fig.text(.5, 0.05, 'Fig_01', fontdict={'size':'x-large', 'ha':'center'});
cases_df = country_df.set_index('Country_Name').cases.sort_values().tail(10)
fig, ax= plt.subplots(1, 1, figsize=(12, 8))
ax.barh(cases_df.index, cases_df, color='steelblue')
for i, v in enumerate(cases_df):
x = (v-170_000 if v > 1_700_000 else v-140_000 if v > 180_000 else v-135_000)
ax.text(x, i-0.1, f'{v:,}', color='white')
for label in ax.get_xticklabels()[1::2]:
label.set_visible(False)
ax.xaxis.set_major_formatter(mpl.ticker.StrMethodFormatter('{x:,.0f}'))
ax.set_xlabel('Number of patients\nFig_02')
ax.set_title(f'\nCOVID_19 patients of top ten countries from {start_date} to {last_date}', y=1.035)
ax.xaxis.set_label_coords(0.5, -0.07)
top_cases = (country_df.sort_values('cases', ascending=False, ignore_index=True)
[['Country_Name', 'cases', 'c_proportion']].head(3))
fcn, scn, tcn = top_cases.Country_Name
fcq, scq, tcq = top_cases.cases
fcp, scp, tcp = top_cases.c_proportion
top_cases
death_name_lst = []
death_quan_lst = []
fig, ((ax1, ax2), (ax3, ax4))= plt.subplots(2, 2, figsize=(15, 10))
for g_name, grp in income_grp:
temp = grp.sort_values('deaths').tail()
death_name_lst.append(temp.Country_Name.iloc[-1])
death_quan_lst.append(temp.deaths.iloc[-1])
ax = (ax1 if g_name=='High income' else ax2
if g_name=='Upper middle income' else ax3
if g_name=='Lower middle income' else ax4)
ax.set_title(g_name, y=1.035)
ax.barh(temp.Country_Name, temp.deaths, color='steelblue')
ax.set_xlabel('Number of patients')
ax.xaxis.set_label_coords(0.5, -0.123)
for i, v in enumerate(temp.deaths):
if g_name=='High income':
x = v-15_500 if v > 100_000 else v-13_000
elif g_name=='Upper middle income':
x = v-3_800 if v > 20_000 else v-3_100
elif g_name=='Lower middle income':
x = v-550 if v > 1_000 else v-400
else:
x = v-20 if v > 100 else v-15
ax.text(x, i-0.1, f'{v:,}', color='white')
for label in ax.get_xticklabels()[1::2]:
label.set_visible(False)
ax.xaxis.set_major_formatter(mpl.ticker.StrMethodFormatter('{x:,.0f}'))
plt.subplots_adjust(top=0.85, wspace=0.3, hspace=0.5)
fig.text(.5, 0.925, f'\nDeaths of COVID-19 Patients of all countries are analysed by IncomeGroup from \
{start_date} to {last_date}', fontdict={'size':'x-large', 'ha':'center'})
fig.text(.5, 0.05, 'Fig_03', fontdict={'size':'x-large', 'ha':'center'});
deaths_df = country_df.set_index('Country_Name').deaths.sort_values().tail(10)
fig, ax= plt.subplots(1, 1, figsize=(12, 8))
ax.barh(deaths_df.index, deaths_df, color='steelblue')
for i, v in enumerate(deaths_df):
x = v-8_500 if v > 100_000 else v-7_300 if v > 20_000 else v-6_000
ax.text(x, i-0.1, f'{v:,}', color='white')
for label in ax.get_xticklabels()[1::2]:
label.set_visible(False)
ax.xaxis.set_major_formatter(mpl.ticker.StrMethodFormatter('{x:,.0f}'))
ax.set_xlabel('Number of deaths\nFig_04')
ax.set_title(f'\nTen highest death toll countries from {start_date} to {last_date}', y=1.035)
ax.xaxis.set_label_coords(0.5, -0.07)
top_deaths = (country_df.sort_values('deaths', ascending=False, ignore_index=True)
[['Country_Name', 'deaths', 'd_proportion']].head(3))
fdn, sdn, tdn = top_deaths.Country_Name
fdq, sdq, tdq = top_deaths.deaths
fdp, sdp, tdp = top_deaths.d_proportion
top_deaths
drate_name_lst = []
drate_quan_lst = []
fig, ((ax1, ax2), (ax3, ax4))= plt.subplots(2, 2, figsize=(15, 10))
for g_name, grp in income_grp:
temp = grp.sort_values('deaths', ascending=False).head(10).sort_values('death_rate').tail()
drate_name_lst.append(temp.Country_Name.iloc[-1])
drate_quan_lst.append(temp.death_rate.iloc[-1])
ax = (ax1 if g_name=='High income' else ax2
if g_name=='Upper middle income' else ax3
if g_name=='Lower middle income' else ax4)
ax.set_title(g_name, y=1.035)
ax.barh(temp.Country_Name, temp.death_rate, color='steelblue')
ax.set_xlabel('Death rate')
ax.xaxis.set_label_coords(0.5, -0.123)
for label in ax.get_xticklabels()[1::2]:
label.set_visible(False)
ax.xaxis.set_major_formatter(mpl.ticker.StrMethodFormatter('{x:.0f}%'))
for i, v in enumerate(temp.death_rate):
if g_name == 'High income':
x = v-2.74
elif g_name == 'Upper middle income':
x = v-1.55 if v > 10 else v-1.35
elif g_name == 'Low income':
x = v-3.5 if v > 10 else v-3
else:
x = v-0.75
ax.text(x, i-0.1, f'{v:.2f}%', color='white')
plt.subplots_adjust(top=0.85, wspace=0.33, hspace=0.5)
fig.text(.5, 0.925, f'\nDeath rate of COVID-19 Patients of top five countries for each IncomeGroup from \
{start_date} to {last_date}', fontdict={'size':'x-large', 'ha':'center'})
fig.text(.5, 0.05, 'Fig_05', fontdict={'size':'x-large', 'ha':'center'});
death_rate_df = country_df.sort_values('deaths').tail(10)
death_rate_ten = death_rate_df.set_index('Country_Name').death_rate.sort_values().tail(10)
fig, ax= plt.subplots(1, 1, figsize=(12, 8))
ax.barh(death_rate_ten.index, death_rate_ten, color='steelblue')
for i, v in enumerate(death_rate_ten):
x = v-1.48 if v > 11 else v-1.28
ax.text(x, i-0.1, f'{v:.2f}%', color='white')
for label in ax.get_xticklabels()[1::2]:
label.set_visible(False)
ax.xaxis.set_major_formatter(mpl.ticker.StrMethodFormatter('{x:.0f}%'))
ax.set_xlabel('Death rate\nFig_06')
ax.set_title(f'\nTen highest death rate countries from {start_date} to {last_date}', y=1.035)
ax.xaxis.set_label_coords(0.5, -0.07)
drate_df = death_rate_ten.tail(3)
trn, srn, frn = drate_df.index
tr, sr, fr = drate_df
print(f'USA: {death_rate_ten["USA"]}')
drate_df
color_dict = {'cases': 'orange', 'deaths': 'red', 'death_rate': 'steelblue'}
cumsum_df = covid_df.groupby('dateRep')[['cases', 'deaths']].sum().cumsum()
cumsum_df.query('deaths > 0', inplace=True)
cumsum_df['death_rate'] = cumsum_df.deaths / cumsum_df.cases * 100
temp_first_date = cumsum_df.index.min().strftime('%d-%m-%Y')
fig, ax= plt.subplots(1, 1, figsize=(12, 8))
ax.plot(cumsum_df.index, cumsum_df.death_rate, color='steelblue')
ax.xaxis.set_major_locator(plt.MaxNLocator(11))
ax.set_ylabel('Death rate')
ax.set_xlabel('Date\nFig_07')
ax.set_title(f'\nCOVID-19 Death rate for the whole world from {temp_first_date} to {last_date}', y=1.035)
ax.xaxis.set_label_coords(0.5, -0.18)
ax.set_xlim([737432, 737578])
fig.autofmt_xdate(rotation=45);
max_day = cumsum_df.death_rate.idxmax()
min_day = cumsum_df.death_rate.idxmin()
max_drate = cumsum_df.loc[max_day].death_rate
min_drate = cumsum_df.loc[min_day].death_rate
print(min_day.strftime('%d-%m-%Y'), min_drate)
print(max_day.strftime('%d-%m-%Y'), max_drate)
pd.concat([cumsum_df.head(1), cumsum_df.tail(1)])
period_df = covid_df.groupby('dateRep').agg({'cases': 'sum', 'deaths': 'sum'})
cases_max_day = period_df.cases.idxmax()
deaths_max_day = period_df.deaths.idxmax()
print('Cases:', cases_max_day.strftime('%d-%m-%Y'), f'{period_df.loc[cases_max_day].cases:>8,}')
print('Deaths:', deaths_max_day.strftime('%d-%m-%Y'), f'{period_df.loc[deaths_max_day].deaths:>7,}')
period_df.info()
period_df.head()
fig, ax= plt.subplots(1, 1, figsize=(12, 8))
ax.plot(period_df.cases, color='steelblue')
ax.plot(period_df.deaths, color='red')
ax.semilogy()
ax.xaxis.set_major_locator(plt.MaxNLocator(11))
ax.set_yticklabels([0.01, 0.1, '1', '10', '100', '1,000', '10,000', '100,000'])
ax.set_xlabel('Date\nFig_08')
ax.set_title(f'\nInfected and death of people around the world by COVID_19 from {start_date} to {last_date}', y=1.035)
ax.set_ylabel('Number of people')
ax.xaxis.set_label_coords(0.5, -0.18)
ax.set_xlim([737420, 737580])
fig.autofmt_xdate(rotation=45);
.gif)
COVID-19 ရောဂါကူးစက်ခံရသူ၊ သေဆုံးသူများ၏အရေအတွက်နှင့်ပတ်သက်သော သတင်းအချက်အလက်ကို European Centre for Disease Prevention and Control (ECDC) မှရယူခဲ့ပါသည်။
31-12-2019 မှ 31-05-2020 အထိတစ်ကမ္ဘာလုံး၌ COVID-19 ရောဂါကူးစက်ခံရသူအရေအတွက်မှာ 6,027,439 ယောက်ဖြစ်ပြီး သေဆုံးသူအရေအတွက်မှာ 368,937 ယောက်ဖြစ်ပါသည်။ ပျမ်းမျှသေဆုံးနှုန်းမှာ 6.12% ဖြစ်ပါသည်။
ဝင်ငွေအုပ်စုအလိုက် COVID-19 ရောဂါကူးစက်ခံရမှု့ကိုလေ့လာကြည့်ရာ၌ မြင့်ဆုံးဝင်ငွေအုပ်စုတွင် အရေအတွက် 1,770,384 ယောက်ဖြင့် USA မှလည်းကောင်း ၊ အလယ်အလတ်အမြင့်ဝင်ငွေအုပ်စုတွင် အရေအတွက် 498,440 ယောက်ဖြင့် Brazil မှလည်းကောင်း ၊ အလယ်အလတ်အနိမ့်ဝင်ငွေအုပ်စုတွင် အရေအတွက် 182,143 ယောက်ဖြင့် India မှလည်းကောင်း၊ အနိမ့်ဆုံးဝင်ငွေအုပ်စုတွင် အရေအတွက် 14,525 ယောက်ဖြင့် Afghanistan တို့သည်ရောဂါကူးစက်ခံရမှု့အမြင့်ဆုံးတိုင်းပြည်များဖြစ်ပါသည်(Fig_01)။
တစ်ကမ္ဘာလုံးအနေဖြင့်လေ့လာကြည့်လျှင် ရောဂါကူးစက်ခံရသူအရေအတွက်အများဆုံးတိုင်းပြည်မှာ USA ဖြစ်ပြီး အရေအတွက်အားဖြင့် 1,770,384 (29.37%) ယောက်ဖြစ်ပါသည်။ ဒုတိယနှင့်တတိယရောဂါကူးစက်ခံရသူအရေအတွက်အများဆုံးတိုင်းပြည်များမှာ Brazil နှင့် Russia တို့ဖြစ်ပြီး အရေအတွက်အားဖြင့် 498,440 (8.27%) နှင့် 396,575 (6.58%) ယောက်တို့ဖြစ်ပါသည်(Fig_02)။
COVID-19 ရောဂါကြောင့်သေဆုံးမှု့အား ဝင်ငွေအုပ်စုအလိုက်လေ့လာကြည့်ရာ၌ မြင့်ဆုံးဝင်ငွေအုပ်စုတွင် အရေအတွက် 103,781 ယောက်ဖြင့် USA မှလည်းကောင်း ၊ အလယ်အလတ်အမြင့်ဝင်ငွေအုပ်စုတွင် အရေအတွက် 28,834 ယောက်ဖြင့် Brazil မှလည်းကောင်း ၊ အလယ်အလတ်အနိမ့်ဝင်ငွေအုပ်စုတွင် အရေအတွက် 5,164 ယောက်ဖြင့် India မှလည်းကောင်း၊ အနိမ့်ဆုံးဝင်ငွေအုပ်စုတွင် အရေအတွက် 249 ယောက်ဖြင့် Afghanistan တို့သည်သေဆုံးမှု့အမြင့်ဆုံးတိုင်းပြည်များဖြစ်ပါသည်(Fig_03)။
COVID-19 ရောဂါကြောင့်သေဆုံးသူအရေအတွက်အား တစ်ကမ္ဘာလုံးအနေဖြင့်လေ့လာကြည့်တွင် သေဆုံးမှု့အများဆုံးတိုင်းပြည်မှာ USA ဖြစ်ပြီး အရေအတွက်အားဖြင့် 103,781 (28.13%) ယောက်ဖြစ်ပါသည်။ ဒုတိယနှင့်တတိယသေဆုံးသူအရေအတွက်အများဆုံးတိုင်းပြည်များမှာ United_Kingdom နှင့် Italy တို့ဖြစ်ပြီး အရေအတွက်အားဖြင့် 38,376 (10.40%) နှင့် 33,340 (9.04%) ယောက်တို့ဖြစ်ကြပါသည်(Fig_04)။
ဝင်ငွေအုပ်စုအလိုက် COVID-19 ရောဂါကြောင့်သေဆုံးသူအရေအတွက်အများဆုံးတိုင်းပြည် 10 ခုအားရွှေးထုတ်ပြီးနောက် နိင်ငံအလိုက်သေဆုံးနှုန်းအားလေ့လာကြည့်ရာ၌ မြင့်ဆုံးဝင်ငွေအုပ်စုတွင် 18.99% ဖြင့် France မှလည်းကောင်း ၊ အလယ်အလတ်အမြင့်ဝင်ငွေအုပ်စုတွင် 11.17% ဖြင့် Mexico မှလည်းကောင်း ၊ အလယ်အလတ်အနိမ့်ဝင်ငွေအုပ်စုတွင် 6.10% ဖြင့် Indonesia မှလည်းကောင်း၊ အနိမ့်ဆုံးဝင်ငွေအုပ်စုတွင် 24.84% ဖြင့် Yemen တို့သည်သေဆုံးနှုန်းအမြင့်ဆုံးတိုင်းပြည်များဖြစ်ပါသည်(Fig_05)။
COVID-19 ရောဂါကြောင့်သေဆုံးသူအရေအတွက်အများဆုံးတိုင်းပြည် 10 ခုအားရွှေးထုတ်ပြီးနောက် ထိုတိုင်းပြည်တစ်ခုချင်းအလိုက်သေဆုံးနှုန်းအားတွက်ထုတ်ကြည့်ရာတွင် France သည်သေဆုံးနှုန်းအမြင့်ဆုံးတိုင်းပြည်ဖြစ်ပြီး 18.99% ဖြစ်ပါသည်။ ထို့နောက် 16.25% ဖြင့် Belgium သည်လည်းကောင်း၊ 14.33% ဖြင့် Italy တို့သည်ဒုတိယနှင့်တတိယသေဆုံးနှုန်းအမြင့်ဆုံးတိုင်းပြည်များဖြစ်ကြောင်းလေ့လာတွေ့ရှိရသည်။ COVID-19 ရောဂါကြောင့်သေဆုံးသူအရေအတွက်အများဆုံးတိုင်းပြည်ဖြစ်သော USA ၏သေဆုံးနှုန်းမှာ 5.86% ဖြစ်ပါသည်(Fig_06)။
တစ်ကမ္ဘာလုံး၌ COVID-19 ရောဂါကြောင့်အနည်းဆုံးပျမ်းမျှသေဆုံးနှုန်းမှာ 20-01-2020 တွင် 1.26% ဖြစ်ပြီးအမြင့်သေဆုံးနှုန်းမှာ 25-04-2020 တွင် 7.28% ကြောင်းလေ့လာတွေ့ရှိရပါသည်(Fig_07)။
တစ်ကမ္ဘာလုံး၌ COVID-19 ရောဂါကူးဆက်ခံရသူနှင့်သေဆုံးသူအရေအတွက်အား နေ့အလိုက်လေ့လာကြည့်ရာတွင် 31-05-2020 သည်ရောဂါကူးဆက်ခံမှု့အများဆုံးနေ့ဖြစ်ပြီး အရေအတွက်အားဖြင့် 127,605 ယောက်ဖြစ်ပါသည်။ 16-04-2020 သည်သေဆုံးသူအရေအတွက်အများဆုံးနေ့ဖြစ်ခဲ့ပြီး 10,520 ယောက်သေဆုံးကြောင်းလေ့လာတွေ့ရှိရပါသည်(Fig_08)။
myan_df = pd.read_excel('covid\covid_19.xlsx', index_col='Case_no').drop('Is_Checked', axis=1)
myan_df.Adult.replace({0:'Minor', 1:'Majority'}, inplace=True)
myan_df.Hospital.replace({'South Okkalapa Women & Children Hospital':
'South Okkalapa Specialist Hospital'}, inplace=True)
m_start_date = myan_df.Confirm_date.min().strftime('%d-%m-%Y')
m_last_date = myan_df.Confirm_date.max().strftime('%d-%m-%Y')
number_of_patients = myan_df.Age.count()
number_of_periods = (covid_df.dateRep.max() - myan_df.Confirm_date.min()).days + 1
average_rate = number_of_patients / number_of_periods
age_min = myan_df.Age.min()
age_max = myan_df.Age.max()
print(f'start_date: {m_start_date}', f'last_date case found : {m_last_date}', sep='\n')
print(f'Total number of patients: {number_of_patients}')
print(f'Total number of periods: {number_of_periods}')
print(f'Average confirm cases per day: {average_rate:.2f}')
print(f'Minimum_age: {age_min}', f'Maximum_age : {age_max}', sep='\n')
myan_df.head()
cd_df = myan_df.groupby('Confirm_date')['Gender'].count()
cd_df.index = cd_df.index.strftime('%d-%m-%Y')
cd_df.name = 'Total'
pop_max_day = cd_df.idxmax()
cmax_pop = cd_df.loc[pop_max_day]
print(f'Day: {pop_max_day}', f'Number of confirm cases: {cmax_pop}', sep='\n')
fig, ax= plt.subplots(1, 1, figsize=(14, 8))
ax.bar(cd_df.index, cd_df, color='steelblue')
for tup in cd_df.reset_index().itertuples():
x = tup.Index-0.15 if tup.Total < 10 else tup.Index-0.34
y = tup.Total
ax.text(x, (y-0.82 if y > 1 else y-0.65), f'{tup.Total}', color='white')
ax.set_xlim(-0.8, len(cd_df)-0.2)
ax.set_ylabel('Number of case')
ax.set_xlabel('Fig_09')
ax.set_title(f'COVID-19 Daily total case for Myanmar from {m_start_date} to {last_date}', y=1.035)
ax.xaxis.set_label_coords(0.5, -0.18)
fig.autofmt_xdate(rotation = 45);
n = 5
count, bin_edges = np.histogram(myan_df.Age, bins=n)
age_idx = count.argsort()
portion = count/count.sum() * 100
print(myan_df.Age.sort_values().values, count, bin_edges, portion, sep='\n')
gender_df = myan_df.Gender.value_counts().reset_index()
gender_df.columns = 'Gender', 'Total'
gender_df['Proportion'] = gender_df.Total / number_of_patients * 100
m_prop = gender_df.query('Gender=="Male"').iloc[0,-1]
f_prop = gender_df.query('Gender=="Female"').iloc[0,-1]
gender_df
adult_df = myan_df.Adult.value_counts().reset_index()
adult_df.columns = 'Adult', 'Total'
adult_df['Proportion'] = adult_df.Total / number_of_patients * 100
maj_prop = adult_df.query("Adult=='Majority'").iloc[0,-1]
min_prop = adult_df.query("Adult=='Minor'").iloc[0,-1]
adult_df
condition_df = myan_df.Condition.value_counts().reset_index()
condition_df.columns = 'Condition', 'Total'
condition_df.set_index('Condition', inplace=True)
condition_df.loc['Normal', 'Total'] = condition_df.loc['Normal', 'Total'] - 7
condition_df.loc['Recovery', 'Total'] = condition_df.loc['Recovery', 'Total'] + 7
condition_df['Proportion'] = condition_df.Total / number_of_patients * 100
condition_df.reset_index(inplace=True)
_, rq, rec_prop = condition_df.query("Condition=='Recovery'").iloc[0]
_, dq, dth_prop = condition_df.query("Condition=='Death'").iloc[0]
condition_df
infection_df = myan_df.Infection_type.value_counts().reset_index()
infection_df.columns = 'Infection_type', 'Total'
infection_df['Proportion'] = infection_df.Total / number_of_patients * 100
loc_prop = infection_df.query("Infection_type=='Local'").iloc[0,-1]
for_prop = infection_df.query("Infection_type=='Foreign'").iloc[0,-1]
infection_df
q_df = myan_df.Is_Q.value_counts().reset_index()
q_df.columns = 'Is_Q', 'Total'
q_df['Proportion'] = q_df.Total / number_of_patients * 100
y_prop = q_df.query("Is_Q=='Yes'").iloc[0,-1]
n_prop = q_df.query("Is_Q=='No'").iloc[0,-1]
q_df
fig, ((ax1, ax2, ax3), (ax4, ax5, ax6))= plt.subplots(2, 3, figsize=(15, 10))
myan_df.Age.plot.hist(bins=n, xticks=bin_edges, color='steelblue', ax=ax1)
ax1.set_ylabel('Number of patients')
ax1.set_xlim(myan_df.Age.min()-1, myan_df.Age.max()+1)
ax1.yaxis.set_label_coords(-0.13, 0.5)
ax1.set_title('Age of Patients', y=1.035)
xs = ['Gender', 'Adult', 'Condition', 'Infection_type', 'Is_Q']
palettes = {'Gender': ['orange', 'steelblue'], 'Adult': ['orange', 'steelblue'],
'Condition': ['red', 'green', 'steelblue'], 'Infection_type': ['orange', 'steelblue'],
'Is_Q': ['orange', 'steelblue']}
axs = [ax2, ax3, ax4, ax5, ax6]
orders = {'Gender': ['Female', 'Male'], 'Adult': ['Minor', 'Majority'],
'Condition':['Death', 'Recovery', 'Normal'], 'Infection_type': ['Local', 'Foreign'],
'Is_Q': ['No', 'Yes']}
titles = {'Gender': 'Gender of Patients', 'Adult': 'Adult of Patients', 'Condition': 'Condition of Patients',
'Infection_type': 'Infection type of Patients', 'Is_Q': 'Quarantine vs Not'}
for col, ax in zip(xs, axs):
sns.categorical.countplot(col, data=myan_df, palette=palettes[col], ax=ax, order=orders[col])
ax.set_title(titles[col], y=1.035)
ax.set(xlabel=None, ylabel=None) if ax!=ax4 else ax.set(xlabel=None, ylabel='Number of patients')
ax.yaxis.set_label_coords(-0.13, 0.5) if ax==ax4 else None
plt.subplots_adjust(top=0.85, wspace=0.3, hspace=0.4)
fig.text(.5, 0.925, f'\nCOVID-19 Patients of Myanmar are analysed by each attribute from {m_start_date} to {last_date}',
fontdict={'size':'x-large', 'ha':'center'})
fig.text(.5, 0.05, 'Fig_10', fontdict={'size':'x-large', 'ha':'center'});
tsp_df = myan_df.query('State=="Yangon"').Address.value_counts().reset_index()
tsp_df.columns = 'Township', 'Total'
tsp_df.sort_values(['Total', 'Township'], ignore_index=True, inplace=True)
tsp_df.Township = tsp_df.Township.str.replace(' Township', '')
fig, ax= plt.subplots(1, 1, figsize=(14, 8))
ax.bar(tsp_df.Township, tsp_df.Total, color='steelblue', width=0.9)
for tup in tsp_df.itertuples():
x = tup.Index-0.1 if tup.Total < 10 else tup.Index-0.25
y = tup.Total
ax.text(x, (y-1.4 if y > 1 else y-0.9), f'{tup.Total}', color='white')
ax.set_xlim(-.8, len(tsp_df)-0.2)
ax.set_ylabel('Number of patients')
ax.set_xlabel('Fig_11')
ax.set_title(f'\nCOVID-19 patients in each area of Yangon from {m_start_date} to {last_date}', y=1.035)
fig.autofmt_xdate(rotation = 45);
rec_df = pd.read_excel('covid\covid_19.xlsx', sheet_name='rel_data', index_col='Case_no')
rec_df.query('Condition=="Recovery"', inplace=True)
merge_df = myan_df[['Confirm_date', 'Age', 'Gender', 'Address']].merge(rec_df, left_index=True, right_index=True)
merge_df.drop(['Time', 'Condition'], axis=1, inplace=True)
merge_df['rec_per'] = (merge_df.Date - merge_df.Confirm_date).dt.days
merge_df['age_grp'] = pd.cut(merge_df.Age, 6)
merge_df['rec_mask'] = merge_df.rec_per.apply(lambda x: 'Over_30' if x > 30 else 'Within_30')
avg_rec_periods = merge_df.rec_per.mean()
tot_recovery = len(merge_df)
min_rec = merge_df.rec_per.min()
max_rec = merge_df.rec_per.max()
print(f'Total_recovery_patients: {tot_recovery:}')
print(f'average_recovery_periods: {avg_rec_periods:.2f}')
print(f'minimum_recovery_periods: {min_rec}')
print(f'maximum_recovery_periods: {max_rec}')
merge_df.head()
summary_gen_rec = merge_df.groupby('Gender')['rec_per'].describe()
summary_gen_rec
fig, [(ax1, ax2), (ax3, ax4)]= plt.subplots(2, 2, figsize=(15, 10))
n2=7
for gen, ax in zip(["Male", "Female"], [(ax1, ax3), (ax2, ax4)]):
temp_df = merge_df.loc[merge_df.Gender==gen]
sns.boxplot(x= 'rec_per', y='Gender', data=temp_df, color='orange', ax=ax[0])
_, bin_edges = np.histogram(temp_df.rec_per, n2)
temp_df.rec_per.plot.hist(bins=n2, color='steelblue', ax=ax[1], xticks=bin_edges)
ax[0].set_xlabel(None)
ax[0].set_ylabel(None)
ax[0].set_title(f'Box plot for {gen}', y=1.045)
ax[1].set_xlabel('Recovery periods')
ax[1].set_ylabel('Number of recovery patients' if ax[1]==ax3 else None)
ax[1].set_title(f'Histogram for {gen}', y=1.045)
plt.subplots_adjust(top=0.85, wspace=0.3, hspace=0.3)
fig.text(.5, 0.925, f'\nCOVID-19 recovery patients of Myanmar from {m_start_date} to {last_date}',
fontdict={'size':'x-large', 'ha':'center'})
fig.text(.5, 0.05, 'Fig_12', fontdict={'size':'x-large', 'ha':'center'});
gen_age_summary = merge_df.groupby(['Gender', 'age_grp']).describe()
gen_age_summary
fig, ax= plt.subplots(1, 1, figsize=(14, 8))
sns.boxplot(x='age_grp', y='rec_per', hue='Gender', data=merge_df, palette=['steelblue', 'orange'], ax=ax)
ax.set_xlabel('Age groups\nFig_13')
ax.set_ylabel('Recovery periods')
ax.set_title(f'Recovery patients are analysed by Age groups and Gender', y=1.045)
ax.xaxis.set_label_coords(0.5, -0.07);
rec_gen_df = (merge_df.rec_mask.value_counts()/tot_recovery*100)
within_30 = rec_gen_df.loc['Within_30']
over_30 = rec_gen_df.loc['Over_30']
within_30, over_30
#g = sns.FacetGrid(myan_df, 'Is_Q', 'Gender')
#g.map(sns.countplot, 'Is_Q')
fig, (ax1, ax2)= plt.subplots(1, 2, figsize=(15, 6), sharey=True)
sns.countplot(hue='Is_Q', data=myan_df, x='Gender', hue_order=['Yes', 'No'], palette=['steelblue', 'red'], ax=ax1)
sns.countplot(hue='Is_Q', data=myan_df.query('Condition=="Recovery"'), x='Gender', hue_order=['Yes', 'No'],
palette=['steelblue', 'red'], ax=ax2);
state_df = myan_df.State.value_counts().reset_index()
state_df.columns = 'State', 'Total'
state_min = state_df.Total.min()
state_max = state_df.Total.max()
state_df['Proportion'] = state_df.Total / number_of_patients * 100
state_df['norm'] = np.log(state_df.Total)
st_name, st_prop = state_df.Total.iloc[0], state_df.Proportion.iloc[0]
state_df
state_df.State.sort_values().unique()
myan_map = folium.Map(location=[19.9940,96.0864],
tiles='StamenToner',
zoom_start=5)
folium.Choropleth(
geo_data='myanmar(original).json',
data=state_df,
columns=['State', 'norm'],
bins=4,
key_on='feature.properties.ST',
nan_fill_color='white',
line_color='black',
fill_color='Paired',
fill_opacity=1,
line_opacity=0.5,
legend_name ='COVID-19',
name="COVID-19 patients of each state",
overlay=True,
highlight = True).add_to(myan_map)
folium.LayerControl().add_to(myan_map)
myan_map.save('Myanmar_covid-19_map.html')
myan_map
myan2_map = folium.Map([19.9940,96.0864],zoom_start=5)
cluster = plugins.MarkerCluster().add_to(myan2_map)
host_lst = ['Naypyitaw General Hospital', 'Kengtung General Hospital', 'Magway Regional Hospital',
'Yangon General Hospital', 'Sagaing General Hospital']
host_lst2 = ['Mawlamyine General Hospital', 'Myitkyina General Hospital']
for t in myan_df.reset_index().itertuples():
html=f'''<div style="font-size:9pt; background-color:steelblue; color:white;">
<div style="padding:3.5px 0; line-height:1.4;">
<b style="padding:0 7px;">Case_no
<span style="padding: 0 1px 0 30.75px;">:</span>
</b>{t.Case_no:02d}<br>
<b style="padding:0 7px;">Age
<span style="padding: 0 1px 0 54.35px;">:</span>
</b>{t.Age}<br>
<b style="padding:0 7px;">Gender
<span style="padding: 0 1px 0 36px;">:</span>
</b>{t.Gender}<br>
<b style="padding:0 7px;">Condition
<span style="padding: 0 1px 0 23.5px;">:</span>
</b>{t.Condition}<br>
<b style="padding:0 7px;">Address
<span style="padding: 0 1px 0 34px;">:</span>
</b>{t.Address}<br>
<b style="padding:0 7px;">State
<span style="padding: 0 1px 0 49px;">:</span>
</b>{t.State}<br>
<b style="padding:0 7px;">Hospital
<span style="padding: 0 1px 0 32px;">:</span>
</b>{t.Hospital}<br>
</div>
</div>
'''
width = (304 if t.Hospital == 'South Okkalapa Specialist Hospital' else 282 if t.Hospital in host_lst2
else 271 if t.Hospital in host_lst else 251)
ifram=folium.IFrame(html, width=width, height=135)
popup=folium.Popup(ifram)
icon=folium.Icon(color='green' if t.Condition == 'Recovery' else 'cadetblue'
if t.Condition != 'Death' else 'red')
folium.Marker([t.Lat, t.Long], popup=popup, icon=icon).add_to(cluster)
myan2_map
23-03-2020 မှ 31-05-2020 အထိမြန်မာနိင်ငံ၌ COVID-19 ရောဂါကူးစက်ခံရသောလူအရေအတွက်မှာ 224 ယောက်ဖြစ်ပြီး၊ 6 ဦးသေဆုံး၍ ရောဂါကင်းစင်သွားသူ 138 ဦးရှိပါသည်။ မြန်မာနိင်ငံ၌ COVID-19 ရောဂါကူးစက်ခံရသူများတွင် အသက် 1 နှစ် 6 လသည်အသက်အငယ်ဆုံးဖြစ်ပြီး အသက်အကြီးဆုံးမှာ 87 နှစ်ဖြစ်ကြောင်းတွေ့ရှိရသည်။တစ်နေ့လျှင်ပျမ်းမျှ 3.20 ယောက်ရောဂါကူးစက်ခံနေရပါသည်။ မြန်မာနိင်ငံ၌ COVID-19 ရောဂါကူးစက်ခံရမှု့အများဆုံးနေ့မှာ 14-04-2020 ဖြစ်ပြီးအရေအတွက်အားဖြင့် 22 ယောက်ဖြစ်ကြောင်းတွေ့ရှိရသည်။
ရောဂါကူးစက်ခံရသူအရေအတွက်အများဆုံးအသက်အပိုင်းအခြားမှာ 15.4 မှ 19.9 နှစ်အကြားဖြစ်ပြီး 96 (42.86%) ယောက်ဖြစ်ပါသည်။ ဒုတိယအများဆုံးမှာ 19.9 မှ 24.3 နှစ်အကြားဖြစ်ပြီး 68 (30.36%) ယောက်ဖြစ်ပါသည်။ ရောဂါကူးစက်ခံရမှု့၏ 56.25% မှာအမျိုးသားများဖြစ်ပြီး အမျိုးသမီးများ၏ရောဂါကူးစက်ခံရနှုန်းမှာ 43.75% ဖြစ်ပါသည်။
အသက် 18 နှစ်မှအထက်ရောဂါကူးစက်ခံရသောနှုန်းမှာ 95.54% ဖြစ်ပြီး အသက် 18 နှစ်အောက်ရောဂါကူးစက်ခံရသောနှုန်းမှာ 4.46% ဖြစ်ပါသည်။ မြန်မာနိင်ငံ၌ COVID-19 ရောဂါကြောင့်သေဆုံးနှုန်းမှာ 2.68% ဖြစ်ပြီး ရောဂါပျောက်ကင်းမှု့နှုန်းမှာ 61.61% ကြောင်းတွေ့ရှိရသည်။ ရောဂါကူးစက်ခံရသူများ၏ 30.80% သည်ပြည်ပမှကူးစက်ခံရသူများဖြစ်ပြီး ပြည်တွင်းကူးစက်ခံရသောနှုန်းမှာ 69.20% ဖြစ်ကြောင်းလေ့လာတွေ့ရှိရပါသည်။ ရောဂါကူးစက်ခံရသူများ၏ 73.66% သည်အသွားအလာကန့်သတ်ထားသူများဖြစ်ပြီး 26.34% သည်အသွားအလာကန့်သတ်ထားခြင်းမရှိသူများဖြစ်ကြာင်းတွေ့ရှိရသည်။
မြန်မာနိင်ငံ၌ရောဂါကူးစက်ခံရသူအများဆုံးရှိသောဒေသမှာ ရန်ကုန်တိုင်းဒေသကြီးဖြစ်ပြီး 171 (76.34%) ယောက်ဖြစ်ပါသည်။ ရန်ကုန်တိုင်းဒေသကြီးတွင် အင်းစိန်မြို့နယ်သည် ရောဂါဖြစ်ပွါးမှု့အများဆုံးဖြစ်ပြီး အရေအတွက်အားဖြင့် 47 ယောက်ဖြစ်ပါသည်။ မြန်မာနိင်ငံ၌ COVID-19 ရောဂါမဖြစ်ပွါးသောနေရာအဖြစ် ကယားပြည်နယ်၊ ဧရာဝတီတိုင်းဒေသကြီးနှင့်ပဲခူး(အရှေ့)တို့သာကျန်ရှိတော့ကြောင်းကိုတွေ့ရှိရပါသည်။
မြန်မာနိင်ငံ၌ COVID-19 ရောဂါခံစားရသောလူနာများ ရောဂါကင်းစင်ဖို့ရန်ပျမ်းမျှကြာချိန်သည် 23.48 ရက်ဖြစ်ပါသည်။ ရောဂါကင်းစင်ရန်အနိမ့်ဆုံးကြာချိန်မှာ 11 ရက်ဖြစ်ပြီး အမြင့်ဆုံးကြာချိန်မှာ 47 ရက်ဖြစ်ကြောင်းတွေ့ရှိရပါသည်။ COVID-19 ရောဂါခံစားရသော အမျိုးသမီးများ၏ ရောဂါကင်းစင်အနိမ့်ဆုံးကြာချိန်သည် 11 ရက်ဖြစ်ပြီး 42 ရက်သည်အမြင့်ဆုံးကြာချိန်ဖြစ်ကြောင်းတွေ့ရှိပါသည်။ အမျိုးသားများ၏ COVID-19 ရောဂါကင်းစင်ရန်အနိမ့်ဆုံးကြာချိန်မှာ 12 ရက်ဖြစ်ပြီး အမြင့်ဆုံးကြာချိန်မှာ 47 ရက်ဖြစ်ပါသည်။ အသက်အုပ်စု (1.414, 15.75] တွင်အမျိုးသမီးများသည် အမျိုးသားများထက်ရောဂါလျင်မြန်စွာပျောက်ကင်းကြောင်းတွေ့ရှိရပြီး (72.75, 87.0] အုပ်စုတွင် အမျိုးသားများသည် အမျိုးသမီးများထက် ရောဂါပျောက်ကင်းမှု့မြန်ဆန်ကြောင်းတွေ့ရှိရသည်။ COVID-19 ရောဂါပျောက်ကင်းသူစုစုပေါင်း၏ 75.76% သည်ရက်သုံးဆယ်အတွင်ရောဂါပျောက်ကင်းပြီး 24.24% သည်ရက်သုံးဆယ်ကျော်မှ ရောဂါပျောက်ကင်းကြောင်း တွေ့ရှိရပါသည်။
first_lst = ['C_11', 'C_12', 'C_13', 'C_8', 'C_28', 'C_40', 'C_5', 'C_15', 'C_1', 'C_23', 'C_128', 'C_101',
'C_107', 'C_98', 'C_155', 'C_86']
second_lst = ['C_39', 'C_84', 'C_87', 'C_89', 'C_94', 'C_108', 'C_110', 'C_79', 'C_92', 'C_93', 'C_133',
'C_134', 'C_142', 'C_139']
third_lst = ['C_151', 'C_152', 'C_153', 'C_154', 'C_162', 'C_177', 'C_179',]
case_2 = Digraph('case', filename='case2', format='png',
node_attr={'color': 'steelblue', 'style': 'filled',
'height': '1', 'fontsize': '14', 'weight':'bold'})
case_3 = Digraph('case', filename='case3', format='png',
node_attr={'color': 'steelblue', 'style': 'filled',
'height': '1', 'fontsize': '14', 'weight':'bold'})
case_4 = Digraph('case', filename='case4', format='png',
node_attr={'color': 'steelblue', 'style': 'filled',
'height': '1', 'fontsize': '14', 'weight':'bold'})
case_5 = Digraph('case', filename='case5', format='png',
node_attr={'color': 'steelblue', 'style': 'filled',
'height': '1', 'fontsize': '15', 'weight':'bold'})
case_6 = Digraph('case', filename='case6', format='png',
node_attr={'color': 'steelblue', 'style': 'filled',
'height': '1', 'fontsize': '15', 'weight':'bold'})
case_2.attr(size='70, 70')
case_3.attr(size='70, 70'), case_4.attr(size='70, 70'), case_5.attr(size='70, 70'), case_6.attr(size='70, 70')
for tup in myan_df.query('Case_relative_no!="-"').Case_relative_no.reset_index().itertuples():
for v in tup.Case_relative_no.split(', '):
case_2.edge(f'{v}', f'C_{tup.Case_no}')
if v in first_lst:
case_3.edge(f'{v}', f'C_{tup.Case_no}')
elif v in second_lst:
case_4.edge(f'{v}', f'C_{tup.Case_no}')
elif v in third_lst:
case_6.edge(f'{v}', f'C_{tup.Case_no}')
else:
case_5.edge(f'{v}', f'C_{tup.Case_no}')
for case in [case_3, case_4, case_5, case_6]:
case.view()
#case_2.view()




c_no_str = ''
myan_iter = myan_df.query("Condition=='Recovery'").index
for c_no in myan_iter:
c_no_str += f'C_{c_no}, '
Author: MIN KYAW ZAW
E-mail: minkyawzraw@gmail.com
LinkedIn: www.linkedin.com/in/minkyawzaw